﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TAM_SPORT;
using APA_DAO;

namespace AMS
{
    public partial class FrmConfig : Form
    {
        public FrmConfig()
        {
            InitializeComponent();
            LoadConfig();
            this.BackColor = Color.LightCyan;
        }

        private void LoadConfig()
        {
            ConfigDao dao = new ConfigDao();
            DataRow row = dao.getConfig();
            if (row != null)
            {
                txtElecPrice.Text = row["ELE_PRICE"] == System.DBNull.Value ? "" : float.Parse(row["ELE_PRICE"].ToString()).ToString("#,##0.##");
                txtWatPrice.Text = row["WAT_PRICE"] == System.DBNull.Value ? "" : float.Parse(row["WAT_PRICE"].ToString()).ToString("#,##0.##");
                txtMotoPrice.Text = row["MOTO_PRICE"] == System.DBNull.Value ? "" : float.Parse(row["MOTO_PRICE"].ToString()).ToString("#,##0.##");
                txtEmail.Text = row["EMAIL"] == System.DBNull.Value ? "" : row["EMAIL"].ToString();
            }
        }

        private bool validate()
        {
            bool errFlg = false;
            int i = 0;
            StringBuilder strBuilder = new StringBuilder();
            float numberCheck;
            if (string.IsNullOrEmpty(txtElecPrice.Text))
            {
                i++;
                strBuilder.Append(i +  ". Vui lòng nhập đơn giá điện");
                errFlg = true;
            }
            else
            {
                if (!float.TryParse(txtElecPrice.Text.Replace(",",""), out numberCheck))
                {
                    i++;
                    strBuilder.Append(i +  ". Đơn giá điện phải là ký tự số.");
                    errFlg = true;
                }
            }

            if (string.IsNullOrEmpty(txtWatPrice.Text))
            {
                i++;
                if (errFlg)
                {
                    strBuilder.Append("\n");
                }
                strBuilder.Append(i +  ". Vui lòng nhập đơn giá nước.");
                errFlg = true;
            }
            else
            {
                if (!float.TryParse(txtWatPrice.Text.Replace(",", ""), out numberCheck))
                {
                    i++;
                    if (errFlg)
                    {
                        strBuilder.Append("\n");
                    }
                    strBuilder.Append(i + ". Đơn giá nước phải là ký tự số");
                    errFlg = true;
                }
            }

            if (string.IsNullOrEmpty(txtMotoPrice.Text))
            {
                i++;
                if (errFlg)
                {
                    strBuilder.Append("\n");
                }
                strBuilder.Append(i + ". Vui lòng nhập đơn giá gửi xe.");
                errFlg = true;
            }
            else
            {
                if (!float.TryParse(txtMotoPrice.Text.Replace(",", ""), out numberCheck))
                {
                    i++;
                    if (errFlg)
                    {
                        strBuilder.Append("\n");
                    }
                    strBuilder.Append(i + ". Đơn giá gửi xe phải là ký tự số");
                    errFlg = true;
                }
            }

            if (string.IsNullOrEmpty(txtEmail.Text))
            {
                i++;
                if (errFlg)
                {
                    strBuilder.Append("\n");
                }
                strBuilder.Append(i + ". Vui lòng nhập địa chỉ email.");
                errFlg = true;
            }
            else
            {
                if (!EmailManage.IsValidEmail(txtEmail.Text))
                {
                    i++;
                    if (errFlg)
                    {
                        strBuilder.Append("\n");
                    }
                    strBuilder.Append(i + ". Địa chỉ Email không đúng.");
                    errFlg = true;
                }
            }

            if (string.IsNullOrEmpty(txtPass.Text))
            {
                i++;
                if (errFlg)
                {
                    strBuilder.Append("\n");
                }
                strBuilder.Append(i + ". Chưa nhập mật khẩu.");
                errFlg = true;
            }
            if (!string.IsNullOrEmpty(strBuilder.ToString()))
            {
                Error er = new Error(strBuilder.ToString());
                er.ShowDialog();
                er.Dispose();
            }
            return !errFlg;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (validate())
            {
                if (!EmailManage.CheckForInternetConnection())
                {
                    Error er = new Error("Vui lòng kiểm tra lại đường truyền internet.");
                    er.ShowDialog();
                    er.Dispose();
                }
                else
                {
                    ConfigDao dao = new ConfigDao();
                    if (!dao.saveConfig(txtElecPrice.Text.Replace(",", ""), txtWatPrice.Text.Replace(",", ""), txtMotoPrice.Text.Replace(",",""),txtEmail.Text.Trim(), txtPass.Text))
                    {
                        Error er = new Error("Cấu hình thất bại. Vui lòng kiểm tra lại.");
                        er.ShowDialog();
                        er.Dispose();
                    }
                    else
                    {
                        int index = txtEmail.Text.IndexOf("@");
                        string user = txtEmail.Text.Substring(0, index + 1);
                        if (EmailManage.sendEmail(txtEmail.Text.Trim(), txtEmail.Text.Trim(), "[AMS - EMAIL SENDING TESTING] Kiểm tra cấu hình",
                            "[AMS - EMAIL SENDING TESTING] Kiểm tra cấu hình thành công", user, txtPass.Text.Trim()))
                        {
                            Result re = new Result("Cấu hình thành công.\nHệ thống đã gửi cho bạn 1 mail. Vui lòng đăng nhập email để kiểm tra");
                            re.ShowDialog();
                            re.Dispose();
                            this.Close();
                        }
                        else
                        {
                            Error er = new Error("Thông tin email không đúng. Hệ thống không thể gửi mail. Vui lòng kiểm tra lại.");
                            er.ShowDialog();
                            er.Dispose();
                        }
                    }
                }
            }
        }

        private String RemoveComma(String value)
        {
            if (value != null && value.Contains(","))
            {
                value = value.Replace(",", String.Empty).Trim();
            }
            return value;
        }

        private void txtElecPrice_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtElecPrice_TextChanged(object sender, EventArgs e)
        {
            if (RemoveComma(txtElecPrice.Text).Length > 3)
            {
                txtElecPrice.Text = decimal.Parse(RemoveComma(txtElecPrice.Text)).ToString("#,###");
                txtElecPrice.Select(txtElecPrice.Text.Length, 0);
            }
        }

        private void txtWatPrice_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtWatPrice_TextChanged(object sender, EventArgs e)
        {
            if (RemoveComma(txtWatPrice.Text).Length > 3)
            {
                txtWatPrice.Text = decimal.Parse(RemoveComma(txtWatPrice.Text)).ToString("#,###");
                txtWatPrice.Select(txtWatPrice.Text.Length, 0);
            }
        }

        private void txtMotoPrice_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtMotoPrice_TextChanged(object sender, EventArgs e)
        {
            if (RemoveComma(txtMotoPrice.Text).Length > 3)
            {
                txtMotoPrice.Text = decimal.Parse(RemoveComma(txtMotoPrice.Text)).ToString("#,###");
                txtMotoPrice.Select(txtMotoPrice.Text.Length, 0);
            }
        }
    }
}
